.TH std::moneypunct::frac_digits,do_frac_digits 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::moneypunct::frac_digits,do_frac_digits \- std::moneypunct::frac_digits,do_frac_digits

.SH Synopsis
   Defined in header <locale>
   public:                             \fB(1)\fP
   int frac_digits() const;
   protected:                          \fB(2)\fP
   virtual int do_frac_digits() const;

   1) Public member function, calls the member function do_frac_digits of the most
   derived class.
   2) Returns the number of digits to be displayed after the decimal point when
   printing monetary values.

.SH Return value

   The number of digits to be displayed after the decimal point. In common U.S.
   locales, this is the value 2.

.SH Example


// Run this code

 #include <iomanip>
 #include <iostream>
 #include <iterator>
 #include <locale>

 struct space_out : std::moneypunct<char>
 {
     pattern do_pos_format() const { return {value, none, none, none}; }
     int do_frac_digits() const { return 0; }
     char_type do_thousands_sep() const { return ' '; }
     string_type do_grouping() const { return "\\002"; }
 };

 int main()
 {
     std::cout.imbue(std::locale("en_US.UTF-8"));
     std::cout << "american locale: " << std::showbase
               << std::put_money(12345678.0) << '\\n';

     std::cout.imbue(std::locale(std::cout.getloc(), new space_out));
     std::cout << "locale with modified moneypunct: "
               << std::put_money(12345678.0) << '\\n';
 }

.SH Output:

 american locale: $123,456.78
 locale with modified moneypunct: 12 34 56 78

.SH See also

   do_thousands_sep provides the character to use as thousands separator
   \fB[virtual]\fP        \fI(virtual protected member function)\fP
   do_decimal_point provides the character to use as decimal point
   \fB[virtual]\fP        \fI(virtual protected member function)\fP
